package io.github.wppli.infrastructure.persistent.po;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;

import lombok.*;

/**
 * <p>
 * 用户发布的图文内容
 * </p>
 *
 * @author lijiaqiang@ljq1024.cc
 * @since 2025-03-10
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("posts")
public class Posts implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 帖子唯一标识
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 发帖用户ID
     */
    @TableField("author_id")
    private Long authorId;

    /**
     * 作者名
     */
    @TableField("author_name")
    private String authorName;

    /**
     * 发帖用户头像URL（冗余字段）
     */
    @TableField("author_avatar")
    private String authorAvatar;

    /**
     * 帖子标题（最大200字）
     */
    @TableField("title")
    private String title;

    /**
     * 帖子正文内容（支持富文本）
     */
    @TableField("content")
    private String content;

    /**
     * 图片URL数组（最多9张）
     */
    @TableField("images")
    private String images;

    /**
     * 可见范围（0-私有 1-公开）
     */
    @TableField("is_public")
    private Integer isPublic;

    /**
     * 内容状态
     */
    @TableField("status")
    private String status;

    /**
     * 创建时间
     */
    @TableField("created_at")
    private LocalDateTime createdAt;

    /**
     * 最后更新时间
     */
    @TableField("updated_at")
    private LocalDateTime updatedAt;

    /**
     * 点赞数
     */
    @TableField("likes_count")
    private Integer likesCount;

    /**
     * 收藏数
     */
    @TableField("collect_count")
    private Integer collectCount;

    /**
     * 评论数
     */
    @TableField("comments_count")
    private Integer commentsCount;

    /**
     * 分享数
     */
    @TableField("shares_count")
    private Integer sharesCount;

    /**
     * 浏览量
     */
    @TableField("views_count")
    private Integer viewsCount;

    /**
     * 是否置顶（0-否 1-是）
     */
    @TableField("is_sticky")
    private Integer isSticky;

    /**
     * 是否经过审核（0-否 1-是）
     */
    @TableField("is_audited")
    private Integer isAudited;

    /**
     * 审核时间
     */
    @TableField("audit_time")
    private LocalDateTime auditTime;

    /**
     * 审核人员ID
     */
    @TableField("auditor_id")
    private Long auditorId;


}
